package com.gutai.admin.dao;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 
 * 描述：
 * 
 * <pre>
 * HISTORY
 * ****************************************************************************
 *  ID    DATE            PERSON            REASON
 *  1     2018年12月30日         YC           Create
 * ****************************************************************************
 * </pre>
 * 
 * @author YC
 * @version 1.0
 * @param <T>
 */
public interface ICommonDao {
    
    /**
     * 根据条件分页查询
     * 
     * @param clazz
     * @param fieldsMap
     * @param pageIdx
     * @param pageSize
     * @return
     * @author la.01367604-2019年1月29日
     */
    public <T> List<T> queryListByPage(Class<T> clazz, Map<String, Object> fieldsMap, int pageIdx, int pageSize);

    /**
     * 分页查询，返回指定列
     * 
     * @param clazz
     * @param feilds
     * @param pageIdx
     * @param pageSize
     * @return
     * @author la.01367604-2019年1月29日
     */
    public <T> List<T> queryListByPage(Class<T> clazz, Set<String> feilds, int pageIdx, int pageSize);

    public <T> List<T> queryByConds(Class<T> clazz, Map<String, Object> fieldsMap);
    public <T> List<T> queryListByPage(Class<T> clazz, int pageIdx, int pageSize);
    public <T> List<T> queryList(String sql, Class<T> clazz);

    /**
     * 查询全部数据，用于数量较少的数据
     * 
     * @param clazz
     * @return
     * @author la.01367604-2019年1月29日
     */
    public <T> List<T> queryAllList(Class<T> clazz);

    public <T> T queryById(Class<T> clazz, int id);

    public <T> int add(T entity);

    public <T> int add(List<T> list);

    public <T> int update(T entity);

    /**
     * 如果原来已存在对应的记录则修改，否则新增一条记录数据
     * 
     * @param entity
     * @return
     * @author LA.01367604-2019年2月15日
     */
    public <T> int addOrUpdate(T entity);

    public <T> int delete(Class<T> clazz, int id);

    public <T> int delete(Class<T> clazz, Map<String, Object> fieldsMap);

    




}
